An improved interface dircuit for allowing data to be transmitted between two data busses wherein the interface contains a FIFO buffer per channel for transmitting the data in either direction, and wherein the source and destination of the data can be switched in real time to provide additional flexibility in transmitting data.
In normal computer systems which process data in the form of numbers or character coded text, the data rate is usually modest, perhaps eight bits for a character and four bits for a numerical digit, resulting in thousands of bits per page. In this case the system is normally able to process the data in the software. However, in systems that process images, the data rates are very high, easily reaching up into the millions of bits per page, and to allow the computer to keep up with the printer speed, "accelerator" cards are frequently used. These are specially designed hardware circuits which accomplish specific image handling functions such as compression, decompression and image rotation.
Normally, these accelerator cards are extra circuit boards which may be plugged into the CPU backplane and transmit data over the existing data bus. However, in high speed systems the amount of data transmitted between accelerator cards overloads the data bus. One solution is to provide a separate data bus for the accelerator cards, herein called a local, or "L" bus, in addition to the system , or "S" bus. Then, between these two busses there must be an interface circuit.
It frequently happens that after data is decompressed or rotated, it will be sent to a printer. Similarly, data received from a scanner may be compressed. Therefore, from a system optimization viewpoint, it is appropriate that I/O devices such as the scanner and printer also be connected to the L bus.
On the other hand, the disk have very limited speed compared to the printer, and images may have to be transmitted to, and accumulated in, the main memory before printing of the entire page is possible. This necessitates the frequent transmission of large amounts of image data across the interface circuit between the L bus and the S bus.
A problem with interface circuits is that, after they are designed, new uses may be thought of that the interface was not designed for. As an example, let us assume that the anticipated data flow would be from input scanner to compressor to disk for storage of the image until it is needed; then disk to main memory for temporary storage; and finally, transmission from main memory to decompressor to printer. Later in the development cycle, or even when the customer is using the product, it is discovered that it would be useful to store fully assembled page bit maps on disk for later use. This would require a transfer from main memory directly to disk. However, the original design did not plan for a transfer from the main memory to the disk. In this case, the board would have to be redesigned to enable it to add the new data path. It would be advantageous if the connections were under software control so that new data paths could be implemented by software request.